当前位置:  开发笔记 > 编程语言 > 正文

BASH中"$ {1#* - }"的含义是什么?

如何解决《BASH中"${1#*-}"的含义是什么?》经验,为你挑选了2个好方法。

有一个if条件如下

if [ "${1#*-}" = "$1" ]; then
   echo "Do something"
fi

但是有人可以解释一下是什么意思${1#*-}吗?



1> Kent..:

${1#*-}删除变量中*-类似glob的模式的最短匹配$1.

例如abcdef-xyz-foo- >xyz-foo

您的if支票实际上是:

if $1 does not contain '-'



2> chepner..:

*-是匹配(可能为空)字符串后跟a的模式-.该#运营商下降到最短前缀匹配*-,从扩张$1.一个例子:

$ foo="123-456"
$ echo "${foo#*-}"
456
$ foo="123-456-789"
456-789

我强调最短,因为有一个伴随运算符##丢弃最长的匹配前缀.

$ echo "${foo##*-}"
789

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有